import { ProblemAnswer, ProblemResult } from '../common/problem';

export interface GetRoomInfoRes {
  code: number;
  data: Data;
  msg: string;
  traceId: string;
}

export interface Data {
  channel: string; // 视频聊天室房间号
  users: UserStatus[]; // 房间中其他用户的信息
  lessonStatus: number; // 课程状态 1-未开始 2-未开始但可以提前进入 3-已开始 4-已结束
  currentRoundInfo: CurrentRoundInfo; // 当前环节信息
  lessonName: string; // 课程名称
  lessonStartTime: string; // 课程开始时间
  intervalBeforeLessonStart: number; // lessonStatus=2时，该字段生效，表示课程还需要多长时间开始，单位：毫秒
  isAssistTalk: boolean; // 辅导老师是否在说话 1-在说话，2-没有说话
  leftTalkDuration: number; // 辅导老师剩余说话时间
  maxTalkDuration: number; // 辅导老师最大说话时间
  startImageURL: string; // 开场图片地址
  startVideoURL: string; // 开场视频地址
  bigClassChannel: string; // 大班频道(声网使用)
  isSign: boolean; // 是否签到
}

export interface UserStatus {
  userId: string;
  userRole: number;
  goldCoinNum: number;
  userNickName: string;
  headUrl: string;
}

export interface CurrentRoundInfo {
  roundId: number; // 环节ID
  roundType: number; // 环节类型：1-主视频环节 2-互动题环节  3-带讨论互动题环节  4-讨论环节 5-视频环节 6-点名环节（分为做题阶段和讲解阶段）
  roundProgress: number; // 环节进度
  doProblemProgress: number; // 做题阶段进度
  explainVideoProgress: number; // 讲解视频播放进度
  roundStatus: number; // 环节状态 （roundType为2，3，6时有效）3-做题 4-讲解
  submitProblemUsers: string[]; // 提交完题目答案用户列表
  problemAnswer: ProblemAnswer; // 用户提交的答案
  problemResult: ProblemResult; // 判题结果
  answerState?: number; // 点名环节答题是否正确1-答对; 2-答错（roundType为6，roundStatus为4时有效）
}

// ProblemRecord 答题记录
export interface ProblemRecord {
  problemId: number; // 题ID
  withSmall: boolean; // 是否有小题
  answer: string[]; // 答案 withSmall为false有效
  isCorrect: boolean; // 正确与否
  smallRecords: SmallProblemRecord[]; // 小题答案 withSmall为true时有效
}

// SmallProblemRecord 小题答题记录
export interface SmallProblemRecord {
  smallProblemId: number; // 小题ID
  answer: string[]; // 小题答案
  isCorrect: boolean; // 正确与否
}
